package cn.com.surker.system.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 用户表
 * </p>
 *
 * @author lucky
 * @since 2021-02-22
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SysUser implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 标识
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 账号
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 电话
     */
    private String phone;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 姓名
     */
    private String name;

    /**
     * 账号状态(0:启用，1:禁用，2:删除)
     */
    private Integer status;

    /**
     * 类型(0:普通用户1：系统管理员)
     */
    private Integer type;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date createTime;

    /**
     * 最后登录时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date loginTime;

    /**
     * 注册IP
     */
    private String registerIp;

    /**
     * 最后登录IP
     */
    private String loginIp;

    /**
     * 备注
     */
    private String remark;

    /**
     * 应用ID
     */
    private String appid;

    /**
     * 微信sessionKey
     */
    private String sessionKey;

    /**
     * 登录授权CODE
     */
    private String jsCode;
    /**
     * 微信openid
     */
    private String openid;
    /**
     * 微信unionid
     */
    private String unionid;
    /**
     * 微信用户头像
     */
    private String avatarUrl;

    /**
     * 职位
     */
    private String position;

    /**
     * 身份证号
     */
    private String cardNo;

    /**
     * 性别
     */
    private String sex;

    /**
     * 入职日期
     */
    private String entryDate;

    /**
     * 离职日期
     */
    private String leaveDate;

    /**
     * 生日
     */
    private String birthday;

    private String openPwd;

    private String creator;

//    private String updator;

	/**
	 * 2022-11-24新增，用户关联的所有部门-站点，从小到大显示
	 */
	@TableField(exist = false)
	private List<SysOrigin> orgs;

	@Override
	public boolean equals(Object o) {
		if (this == o) return true;
		if (o == null || (getClass() != o.getClass() && !(o instanceof SysUser))) return false;
		SysUser sysUser = (SysUser) o;
		return id.equals(sysUser.id);
	}

	@Override
	public int hashCode() {
		return Objects.hash(id);
	}
}
